﻿using Microsoft.Phone.Controls;
using System.Collections.Generic;
using System.IO.IsolatedStorage;
using System.Windows;
using System.Xml.Serialization;
using WP8.AlmacenamientoDatos.Classes;

namespace WP8.AlmacenamientoDatos.Pages
{
    public partial class Serialization : PhoneApplicationPage
    {
        public Serialization()
        {
            InitializeComponent();
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            if (IsolatedStorageSettings.ApplicationSettings.Contains("Usuario"))
            {
                var usuario = IsolatedStorageSettings.ApplicationSettings["Usuario"] as List<Usuario>;
                if (null != usuario)
                {
                    this.txtNombre.Text = usuario[0].Nombre;
                    this.txtEdad.Text = usuario[0].Edad.ToString();
                }
            }

            base.OnNavigatedTo(e);
        }

        private void XML_Click(object sender, RoutedEventArgs e)
        {
            var usuario = new Usuario { Nombre = this.txtNombre.Text, Edad = int.Parse(this.txtEdad.Text), Cuenta = new Cuenta() };
            this.txtSerialization.Text = ObjectXmlSerializer<Usuario>.ToXml(usuario);
        }

        private void JSON_Click(object sender, RoutedEventArgs e)
        {
            var usuario = new Usuario { Nombre = this.txtNombre.Text, Edad = int.Parse(this.txtEdad.Text) };
            this.txtSerialization.Text = ObjectJsonSerializer<Usuario>.ToJson(usuario);
        }
    }

    [XmlRoot(ElementName = "Equipo")]
    public class Usuario
    {
        [XmlAttribute(AttributeName="Modelo")]
        public string Nombre { get; set; }

        public int Edad { get; set; }

        [XmlElement(ElementName = "Nokia")]
        public Cuenta Cuenta { get; set; }
    }

    public class Cuenta
    {
        public string Nick { get; set; }

        public string Clave { get; set; }
    }
}